﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using l1cs.server.model.Instance;
using l1cs.server.utils;
using l1cs.server.serverpackets;

namespace l1cs.server.clientpackets
{
    public class C_Propose : ClientBasePacket
    {
        private const String _C_PROPOSE = "[C] C_Propose";
        private static Logger _log = Logger.getLogger( typeof( C_Propose ).FullName );

        public C_Propose( byte[] abyte0, ClientThread clientthread )
            : base( abyte0 )
        {
            int c = readC();

            L1PcInstance pc = clientthread.getActiveChar();
            if ( c == 0 )
            { // /propose（/プロポーズ）
                if ( pc.isGhost() )
                {
                    return;
                }
                L1PcInstance target = FaceToFace.faceToFace( pc );
                if ( target != null )
                {
                    if ( pc.getPartnerId() != 0 )
                    {
                        pc.sendPackets( new S_ServerMessage( 657 ) ); // \f1あなたはすでに結婚しています。
                        return;
                    }
                    if ( target.getPartnerId() != 0 )
                    {
                        pc.sendPackets( new S_ServerMessage( 658 ) ); // \f1その相手はすでに結婚しています。
                        return;
                    }
                    if ( pc.get_sex() == target.get_sex() )
                    {
                        pc.sendPackets( new S_ServerMessage( 661 ) ); // \f1結婚相手は異性でなければなりません。
                        return;
                    }
                    if ( pc.getX() >= 33974 && pc.getX() <= 33976
                            && pc.getY() >= 33362 && pc.getY() <= 33365
                            && pc.getMapId() == 4 && target.getX() >= 33974
                            && target.getX() <= 33976 && target.getY() >= 33362
                            && target.getY() <= 33365 && target.getMapId() == 4 )
                    {
                        target.setTempID( pc.getId() ); // 相手のオブジェクトIDを保存しておく
                        target.sendPackets( new S_Message_YN( 654, pc.getName() ) ); // %0%sあなたと結婚したがっています。%0と結婚しますか？（Y/N）
                    }
                }
            }
            else if ( c == 1 )
            { // /divorce（/離婚）
                if ( pc.getPartnerId() == 0 )
                {
                    pc.sendPackets( new S_ServerMessage( 662 ) ); // \f1あなたは結婚していません。
                    return;
                }
                pc.sendPackets( new S_Message_YN( 653, "" ) ); // 離婚をするとリングは消えてしまいます。離婚を望みますか？（Y/N）
            }
        }

        override
        public String getType()
        {
            return _C_PROPOSE;
        }
    }
}